ユーザーはユーザーアカウントを使ってシステムにログインし、アクセスが許可されているファイルやアプリケーションを使用することができます。
Linuxではスーパーユーザーアカウントと一般ユーザーアカウントという2種類のユーザーアカウントが存在します。
ユーザーアカウント情報は、/etc/passwdファイルで確認する事ができます。
/etc/passwdファイルには、ユーザー名、パスワード、ユーザーID、グループID、コメント(本名とか電話番号とか)ホームディレクトリ、ログインシェルが記録されています。
以前では、/etc/passwdファイルに暗号化されたパスワードが書かれていました。
/etc/passwd ファイルは一般ユーザーでも参照でき、暗号化されたパスワードも見ることができました。また、/etc/passwd ファイルを一般ユーザーが読めないようにしてしまうと、システムにログインできなくなります。
いくら暗号化しているといっても、それを見れるようになっていると解析される可能性があります。
そのため、最近のディストリビューションでは、パスワードの場所に大概「 x 」と記入されています。そして、シャドウパスワードというものが利用されるようになり、暗号化されたパスワードは、/etc/shadow ファイルに書かれています。
ちなみに、root のリードオンリーです。
Linuxには「グループアカウント」という機能があり、複数のアカウントを論理的にまとめて扱う事が可能です。
同一グループのユーザーは、別々のユーザーであっても、そのグループ所有のファイルに対し、同じアクセス権を持つことになります。
また、1つのアカウントが複数のグループに所属する事も可能です。
ユーザーにとっての基本となるグループをプライマリグループ(基本グループ)と呼び、それ以外に参加しているグループをサブグループ(参加グループ)と呼びます。
ファイルやディレクトリを作成した場合にデフォルトで設定される、所有グループはプライマリグループです。
ユーザーのプライマリグループは、/etc/passwdファイルのGIDフィールドで確認します。
グループアカウントの情報は、/etc/groupファイルで確認する事ができます。
グループ名、グループのパスワード、グループID、サブグループとして所属しているアカウントのリストが記録されています。
まず、アカウントを作成します。アカウント作成コマンドは、useradd です。できるだけ、8文字以内でおさめるようにし、先頭の文字には英小文字、もしくはアンダースコア("_
")を使用することができます。ユーザーを作成したら今度は、パスワードを作成します。パスワード作成コマンドは、passwd です。Linuxをデフォルトでインストールした場合は、shadow パスワード(パスワード入力中にアスタリスク "*"が表示されない)を使用し、暗号化アルゴリズムにMD5ハッシュが使われています。
useradd ユーザーID |
|
-d home_dir | ホームディレクトリを指定します。通常は/home/アカウント名です。 |
-g group | ユーザーが所属するプライマリグループ名、もしくはグループIDを指定します。このオプション実行時には予め、groupadd コマンドでグループを作成しておく必要があります。 |
-m | ホームディレクトリが存在しない場合に、ホームディレクトリを作成します。 |
-s shell | ユーザーのログインシェルを指定します。ユーザーにシェルを提供しない場合は、/bin/true や /dev/null のように指定します。 |
-u uid | ユーザーIDを指定します。ユーザーのアカウントは500番以降を指定します。 |
-D | デフォルトの設定値を表示、修正する。 |
-G group | ユーザーが所属するプライマリグループ以外のグループ名、もしくはグループIDを指定します。 |
# useradd sakura # passwd sakura Changing password for user sakura. New password: Retype new password: passwd: all authentication tokens updated successfully. |
上記のコマンドを実行すると、/etc/passwd、/etc/shadow、/etc/group、/etc/gshadowに
sakura のエントリが追加されています。また、/home 下に sakura のディレクトリ(sakura
のホームディレクトリ)が作成されています。
アカウントを削除するには、userdel コマンドを実行します。また、ホームディレクトリも一緒に削除する場合は、-r オプションをつけます。
userdel [オプション] ユーザーID |
|
-r | ホーム・ディレクトリも同時に削除する |
# userdel -r sakura |
アカウントを編集するには、usermod コマンドを実行します。
usermod [オプション] ユーザーID |
|
-c コメント | ログイン・アカウントに対するコメントを変更する |
-d パス | ホーム・ディレクトリを変更する。-mを指定すると、以前のホームディレクトリを移動する |
-e 日付 | このアカウントの有効期限を指定する。形式はmm/dd/yyで表す |
-f 日数 | 有効期限を越えた場合、使用不可能になるまでの日数を指定する。-1 にしておくことでこの機能を不能にすることができる |
-l ログイン名 | ユーザー・アカウント名を変更する。ただしユーザー・アカウント名のみ変更するだけで、そのほかの情報を変更しない |
-G グループ名 | このアカウントが所属するグループを指定する。このとき、カンマで区切ることにより複数指定することができる |
-s パス | ログインシェルを変更する。 |
-L ユーザーアカウント | パスワードをロックして、ユーザーアカウントを一時的に無効化する |
-U ユーザーアカウント | パスワードロックを解除する。 |
# usermod -G harugrp sakura |
アカウントの作成後、パスワードは設定されていない状態なのでパスワードを設定します。passwd コマンドに続けて作成したいユーザーのアカウント名を入力します。なお、各ユーザーが個別にパスワードを作成したり、変更したい場合は、一般ユーザーでログインし、passwd
と入力します。
passwd ユーザーID |
|
# passwd sakura |
パスワードファイルは、/etc/passwd に格納されており、以下のような形式で記述されています。書式は以下の通りです。パスワード部分が
x と表示されているのは、実際のパスワードは、/etc/shadow に記述されているためです。インストール時にシャドウパスワードを使うようにした場合は、この部分にはx
が記述されています。/etc/passwd は一般ユーザーでも閲覧が可能になっていますが、/etc/shadow
は一般ユーザーが閲覧することはできません。
$ cat /etc/passwd | grep sakura |
sakura:x:500:500::/home/sakura:/bin/bash |
/etc/shadow は以下の書式に従って記述されています(注:表示の都合上改行してあります)。
# cat /etc/shadow | grep sakura |
sakura:$1p722JqTfSV$G5lw8yjX1rX/ex?PfaHKdm1:12417:0:99999:7::: |
last_change | 1970年1月1日から最後にパスワードが変更された日までの日数 |
min_days | パスワードが変更できるようになるまでの日数 |
max_days | パスワードを変更しなくてはならなくなる日までの日数 |
warn_days | パスワードの有効期限をユーザーに警告するまでの日数 |
inactive_days | パスワードの有効期限が過ぎてから使用不能になるまでの日数 |
expire_days | 1970年1月1日からアカウントが使用不能になるまでの日数 |
reserved | 予約領域 |
chage コマンドは、ユーザのパスワードに対して有効期限を設定します。設定された有効期限を過ぎた後もパスワードの変更を行わなかった場合、猶予期間が過ぎた時点で指定したユーザのアカウントがロックされます。ロックされたアカウントは管理者権限を持ったユーザ「root」でなければ使用可能にすることは出来ません。(猶予期間を指定しない場合、アカウントのロックは行われません。)管理者権限を持っていない一般ユーザは自身のパスワードの有効期限の確認のみ可能です。
● chage コマンド構文
chage [オプション] ユーザーID |
|
-l | パスワードの有効期限に関する情報を表示します |
-m 最低期間 | パスワード変更不可能な期間を設定します。最後にパスワードが変更された日付から指定された期間、パスワードを変更できません。 |
-M 最大有効期間 | パスワードの有効期間を設定します。最後にパスワードが変更された日付から指定された期間、パスワードが有効です |
-d 日付 | パスワードの最新更新日を指定された日付に変更します。 |
-W 日数 | パスワード期限切れの警告を期限切れの何日前から表示するかを設定します。 |
-I 日数 | パスワードの有効期限が過ぎた後、アカウントロックまでの猶予日数を指定します。 |
-E 有効期限 | パスワードの有効期限を設定します。指定された日付までパスワードが有効です。 |
groupadd コマンドは、新しいグループを作成します。グループ名は/etc/groupファイルに追記されます。管理者ユーザーのみ実行可能です。
● groupadd コマンド構文
groupadd [オプション] グループ名 |
|
-g グループID | グループIDを10進数で指定します。500未満の番号はシステムで使用しているため指定できません。 |
# groupadd -g 1000 grp01 |
groupdel コマンドは、グループを削除します。グループ名は/etc/groupファイルからも削除されます。管理者ユーザーのみ実行可能です。
● groupdel コマンド構文
groupdel [オプション] グループ名 |
|
# groupdel grp01 |
groupmod コマンドは、グループの設定を変更します。管理者ユーザーのみ実行可能です。
● groupmod コマンド構文
groupmod [オプション] グループ名 |
|
-g グループID | 変更するグループIDを10進数で指定します。500未満の番号はシステムで使用しているため指定できません。 |
-n グループ名 | グループ名を変更する場合は新しいグループ名を指定します。 |
# groupmod -g 2000 grp01 |
シャドウパスワードとは、パスワードのデータをユーザーが見られないようにする仕組みのことです。通常、パスワードは/etc/passwdというファイルに暗号化して記録されます。この/etc/passwdはどんなユーザーでも見ることができるので、セキュリティ上好ましくありません。
これに対してシャドウパスワードは、root権限でしか参照できない/etc/shadowというファイルにパスワードが記録され、/etc/passwdのパスワード暗号部分は、「x」という文字に置き換えられます。
/etc/shadowの パーミッションは400(r--------)なので、一般ユーザーが パスワードを見ることはできません。rootでも直接書き換えることはできません。
現在のほとんどのディストリビューションでは、インストール時にデフォルトでシャドウパスワードを使う設定になっていますが、万一シャドウパスワードになっていないなら、シャドウパスワード化します。
シャドウパスワードになっているかどうかは、/etc/passwdを開いてみると分かります。シャドウパスワードになっていないときには、以下のようにユーザーアカウントの次に、意味不明な文字の羅列があります。
sakura:$1$Va/j/4zG$LmZf/P7bj2wwaHugF0xyz1:502:503::/home/sakura:/bin/bash |
シャドウパスワードになっている場合は、以下のように「x」とあるだけです。
sakura:x:502:503::/home/sakura:/bin/bash |
シャドウパスワードになっていないときは、root権限で pwconv というコマンドを使って、シャドウパスワードに変換します。
# pwconv |
シャドウパスワードをやめるときは、pwunconv コマンドを使用します。
# pwunconv |
getent コマンドを使うと、各種データベースファイルから一覧を表示することができます。
getent データベース [キー] |
|
# getent passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt ・・・ sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin dovenull:x:496:492:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin |
# getent passwd root root:x:0:0:root:/root:/bin/bash |
ユーザーアカウントを作成すると、通常、そのユーザー専用に使えるホームディレクトリも同時に作成されます。
そのホームディレクトリの作成時に、基本的な設定ファイルなど、全員がよく使用するファイルを同時に配布したい場合は、/etc/skelディレクトリ(スケルトンディレクトリ)にそれらのファイルを置いておきます。
ホームディレクトリが作成される際には、/etc/skelディレクトリ内のファイルがホームディレクトリ内にコピーされます。(ファイルの所有者は新規に作成されたユーザーに変更されます)
# ls -al /etc/skel 合計 44 drwxr-xr-x 3 root root 4096 3月 29 11:07 . drwxr-xr-x 100 root root 12288 5月 15 04:02 .. -rw-r--r-- 1 root root 33 7月 22 2011 .bash_logout -rw-r--r-- 1 root root 176 7月 22 2011 .bash_profile -rw-r--r-- 1 root root 124 7月 22 2011 .bashrc drwxr-xr-x 4 root root 4096 3月 8 23:38 .mozilla |
スケルトンディレクトリ(/etc/skel)に格納されているファイルをスケルトンファイルと呼びます。通常スケルトンファイルは隠しファイルのため一覧表示したい場合はls -Aと入力する必要があります。
デフォルトでは.bash_logout、.bashrc、.profileのようなファイルが格納されています。
ファイル名 | 説明 |
.bash_logout | ログアウト時に読み込まれる設定が記述されたファイル |
.bashrc | シェル起動時に毎回設定したい内容を記述するファイル。 エイリアスやシェル関数が設定される。 |
.profile | ログインして~/.bash_profile ・ ~/.bash_loginが存在しない場合にのみ読み込まれる設定ファイル |
www.it-shikaku.jp
[Top] | |
[講義目次] | |
[1.07:ネットワーク基礎] | |
[1.08:システム管理] | |
[1.08.1 アカウント管理] | |
[1.08.2 ジョブスケジューリング] | |
[1.08.3 ローカライゼーションと国際化] | |
[1.09:重要なシステムサービス] | |
[講義検索] | |
[リンク集] |